// 客户端发送请求最先进入的就是app.js

// 搭建服务器
// 加载express模块
const express = require('express');
// 创建服务对象
const app = express();
// 指定端口，开启服务
app.listen(3008,()=>console.log('server running'));

// 注册解决跨域的中间件
// 加载cors第三方模块
const cors = require('cors');
app.use(cors());



// 加载express-jwt模块
const expressJWT = require('express-jwt');
// 注册解密token的中间件
app.use(expressJWT({
    // 设置验证参数
    secret:'bj109', //解密用的
    algorithms:['HS256']  //算法
}).unless({
    // 指定哪些接口不用验证token
    path:/^\/api/,  //接口以api开头的不用验证token
}));

// 注册去往各种接口的中间件
// 配置获取post请求的请求体的中间件
app.use(express.urlencoded({extended:false}));

// 文章分类中间件
// 加载category自定义模块
let cateRouter = require('./router/category.js');  //此时cateRouter就是category.js文件中的路由对象/函数router
// 注册为中间件 只要浏览器发送的请求url里，根路径（端口后面）是/my/article，就会执行cateRouter，也可以说去往cateRouter对应的文件
app.use('/my/article',cateRouter);


// 登录注册中间件
// 加载登录注册文件模块
let loginRouter = require('./router/login.js');
app.use('/api',loginRouter);




// 错误处理中间件
app.use((err,req,res,next)=>{
    if (err.name === 'UnauthorizedError') {   
      res.status(401).send({
          status:1,
          msg:'身份认证失败'
        });
    }
});